// const ac = new AbortController()

// // Or the EventTarget API...
// ac.signal.addEventListener(
//   'abort',
//   event => {
//     console.log(event.type) // Prints 'abort'
//   },
//   { once: true }
// )
// // Use either the onabort property...
// ac.signal.onabort = () => console.log('aborted!')

// ac.abort('123')
// console.log(ac.signal.aborted, ac.signal.reason) // Prints 'true'

// console.log(Object.getOwnPropertyNames(global))

// __dirname和__filename是全局变量，分别表示当前文件所在目录和当前文件的绝对路径
// 这2个变量只在cjs模块中有效，esm模块中无法使用
// console.log(__dirname, __filename)

// 在esm中可以使用import.meta.url获取当前文件的绝对路径
import { fileURLToPath } from 'url'
import { dirname } from 'path'
import { createRequire } from 'module'
const __filename = fileURLToPath(import.meta.url)
const __dirname = dirname(__filename)

console.log('__filename', __filename)
console.log('__dirname', __dirname)

// 在esm中可以使用createRequire方法获取require方法
const require = createRequire(import.meta.url)
console.log('name', require('../package.json'))
